import logging

import pymysql
from PyQt5.QtCore import QVariant
from PyQt5.QtSql import QSqlDatabase, QSqlQuery

# 使用 PyMySQL 建立连接
connections = {
    'mysql': {
        'host': 'localhost',  # 数据库服务器地址
        'user': 'root',  # 数据库用户名
        'password': 'sy123!@#',  # 数据库密码
        'database': 'management_dev',  # 数据库名
        'port': 3306,  # 端口，默认为3306
        'charset': 'utf8mb4'  # 字符编码
        # cursorclass=pymysql.cursors.DictCursor  # 返回字典形式的结果
    }

}


class DBUtil:
    """
    数据库连接工具类
    """

    def __init__(self, db_ame: str):
        super().__init__()
        logging.info('init DBUtil')
        self.db_ame = db_ame

    def select(self):
        """
        查询结果集
        :return: 查询结果对象的列表集
        """
        result = None
        connection = pymysql.connect(
                    host=connections['mysql']['host'],  # 数据库服务器地址
                    user=connections['mysql']['user'],  # 数据库用户名
                    password=connections['mysql']['password'],  # 数据库密码
                    database=connections['mysql']['database'],  # 数据库名
                    port=connections['mysql']['port'],  # 端口，默认为3306
                    charset=connections['mysql']['charset'],  # 字符编码
                    cursorclass=pymysql.cursors.DictCursor  # 返回字典形式的结果
                )
        try:
            # 创建游标对象
            with connection.cursor() as cursor:
                # 执行SQL查询
                sql = "SELECT * FROM system_user"
                cursor.execute(sql)
                # 获取结果
                result = cursor.fetchall()
        except pymysql.error as e:
            logging.error(e)
        finally:
            # 关闭连接
            connection.close()
            return result


if __name__ == '__main__':
    util = DBUtil('mysql')
    users = util.select()
